Field
Various features generally relate to random number generators, and more specifically to random number generators that utilize the settling time of one or more bit cells as an entropy source.
Background
As mobile electronic devices, such as portable telephone devices, laptops, tablets, integrated circuit (IC) cards, etc., are rapidly becoming more common, there is an increasing demand for high-level, robust cryptographic security systems that protect data in small-sized electronic circuits. Such cryptographic security systems may be broadly divided into public-key cryptography and symmetric-key cryptography. In public-key cryptography, different keys are used for the encryption and decryption of information. In such a system, security is ensured by keeping one key (e.g., private key) used for decrypting encrypted information secret at the recipient, while another key (e.g., public key) is made available to the public so that the sender can use it to encrypt the information before sending it to the recipient. By contrast, in symmetric-key cryptography a single key is used for the encryption and decryption of the information. In such a system, security is ensured by keeping the key secret from third parties (i.e., parties excluding the recipient and sender).
Thus, in both public-key and symmetric-key cryptographic systems, security is dependent upon the confidentiality of at least one secret key. If the secret key is accessible or calculable by a third party in some way, the security of the cryptographic system may break down. Accordingly, secret key generation should be executed using algorithms that make guessing or calculating the secret key by a third party practically infeasible. Such algorithms generally use random numbers—that are unknown to third parties—to generate the secret key.
Depending on how they are generated, random numbers are broadly divided into two groups: pseudo-random numbers and true random numbers.
Pseudo-random numbers refer to a part of a sequence of numbers generated by deterministic calculation, and are generated by feeding a seed to a pseudo-random number generation algorithm as an initial value. Pseudo-random numbers are logically predictable as long as its generation method (i.e., pseudo-random number generation algorithm) is known. Furthermore, if the seed is known then it becomes possible to generate the same pseudo-random sequence of numbers in advance. For this reason, the safety of encrypted information may be threatened when pseudo-random numbers are used to generate the secret key of the cryptographic system.
By contrast, true random numbers are generated by making use of physical phenomenon that has intrinsically random properties. Examples of such physical phenomenon include, for example, thermal noise in electronic devices, radioactive decay, arrival timing of network data, electrical noise, etc. Unlike pseudo-random numbers, true random numbers have no reproducibility, and thus such random numbers cannot be predicted. For this reason, cryptographic systems that utilize true random numbers to generate secret keys are more secure than those that utilize pseudo-random numbers.
One source of entropy for true random number generation is the initial state (i.e., power up state) of static random access memory (SRAM) cells, which in theory could be either a logical 1 or 0 with equal probability. Memory cells offer a convenient and economical means for providing entropy because they are so ubiquitous on integrated circuits. However, due to unavoidable device mismatches within an SRAM cell (e.g., one inverter has more pull/gain than the other inverter), such memory cells have a natural tendency to be biased to a specific logical value (e.g., 0 or 1) at startup and consequently the entropy they provide is lessened.
There is a need for on-chip entropy sources that are small and inexpensive, and that provide high entropy and randomness. Such entropy sources can be used by random number generators to generate true random numbers for use in a variety of applications including but not limited to cryptographic security algorithms (e.g., cryptographic key generation algorithms), gambling, statistical sampling, computer simulations, completely randomized designs, Monte Carlo-method simulations, and any other application that utilizes an unpredictable value.